package com.yuanlai.quartz;

import java.util.Date;
import java.util.concurrent.TimeUnit;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

import com.yuanlai.quartz.job.ExampleJob;

public class Test {
   public static void main(String[] args) throws SchedulerException, InterruptedException {
	   SchedulerFactory schedulerFactory = new StdSchedulerFactory();
	   Scheduler scheduler = schedulerFactory.getScheduler();
   	Date  startDate=new Date();
   	//因为此处startDate和endDate都是当前时间，任务还每开始就到结束时间了
   	//此处手动把开始时间和结束时间，做成一个有时间差的
   	startDate.setTime(startDate.getTime()+10000);
		//2.任务实例 JobDetail
   	JobDetail jobDetail=JobBuilder.newJob(ExampleJob.class)//加载人物类，与HellowJob完成绑定
   	          .withIdentity("job1", "group1")//参数1：任务的名称(唯一实例)；参数2：任务组的名称
   	          .build();
   	//3.触发器 Trigger
   	Trigger trigger= TriggerBuilder.newTrigger()
   	               .withIdentity("trigger1", "triggerGroup1")//参数1：触发器的名字；参数2：触发器组的名称
   	              // .startNow()//可以加上这个，代表马上启动这个触发器
   	              .startAt(startDate)//设置任务开始时间
   	              //.endAt(endDate)
   	              .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                             .repeatSecondlyForever(5)//每5秒重复执行一次
                             )
   	               .build();    
   	//4.让调取其关联任任务和触发器，保证按照触发器定义的条件执行任务
   	scheduler.scheduleJob(jobDetail, trigger);
   	//5.启动
   	scheduler.start();  
   	System.out.println("===============当前时间================="+new Date());
    scheduler.triggerJob(jobDetail.getKey());
	
   	Thread.sleep(20000);
   	scheduler.shutdown();
}
}
